MongoDB একটি শক্তিশালী ডেটাবেস সিস্টেম, তবে এটি নিরাপত্তার জন্য কিছু অতিরিক্ত কনফিগারেশন এবং কার্যকরী পদক্ষেপের প্রয়োজন। ডেটাবেস অ্যাপ্লিকেশনগুলির নিরাপত্তা নিশ্চিত করতে MongoDB এর জন্য কিছু সেরা নিরাপত্তা অভ্যাস অনুসরণ করা উচিত। এখানে MongoDB এর জন্য কিছু গুরুত্বপূর্ণ Security Best Practices আলোচনা করা হল:
1. Authentication (প্রমাণীকরণ) সক্ষম করা
MongoDB ডিফল্টভাবে প্রমাণীকরণ (authentication) নিষ্ক্রিয় থাকে, তাই এটি সক্রিয় করা অত্যন্ত গুরুত্বপূর্ণ। MongoDB তে প্রমাণীকরণ সক্ষম করার মাধ্যমে, কেবলমাত্র অনুমোদিত ব্যবহারকারীরাই ডেটাবেসে প্রবেশ করতে পারবে।
MongoDB Authentication সক্ষম করা:
MongoDB তে প্রমাণীকরণ সক্ষম করতে MongoDB এর--authফ্ল্যাগ ব্যবহার করতে হবে:mongod --authব্যবহারকারী তৈরি করা:
MongoDB তে ব্যবহারকারী তৈরি করতেadminডাটাবেসে ব্যবহারকারী তৈরি করতে হবে:use admin db.createUser({ user: "myUserAdmin", pwd: "myUserAdminPassword", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })
2. Authorization (অনুমতি) কনফিগার করা
MongoDB তে Role-Based Access Control (RBAC) ব্যবহার করে আপনি ব্যবহারকারীদের বিভিন্ন স্তরের অ্যাক্সেস নিয়ন্ত্রণ করতে পারেন। MongoDB তে বিভিন্ন ধরনের ভূমিকা (roles) রয়েছে, যেমন read, readWrite, dbAdmin, userAdmin, ইত্যাদি।
ব্যবহারকারীর ভূমিকা নির্ধারণ করা: MongoDB তে ব্যবহারকারীর জন্য সঠিক ভূমিকা (role) নির্ধারণ করা খুবই গুরুত্বপূর্ণ। এটি নিশ্চিত করবে যে ব্যবহারকারী কেবল তার অনুমোদিত কাজগুলোই করতে পারে।
উদাহরণস্বরূপ, একটি নির্দিষ্ট ডাটাবেসের জন্য একটি ব্যবহারকারীকে শুধু পড়ার অনুমতি দেওয়া:
use myDatabase db.createUser({ user: "myReader", pwd: "myPassword", roles: [ { role: "read", db: "myDatabase" } ] })
3. SSL/TLS এনক্রিপশন ব্যবহার করা
MongoDB তে ট্রান্সমিশন ডেটা এনক্রিপশন সক্রিয় করা উচিত, বিশেষত যখন ডেটাবেস এবং ক্লায়েন্ট সার্ভার দূরবর্তী অবস্থানে থাকে। MongoDB SSL (Secure Sockets Layer) বা TLS (Transport Layer Security) এনক্রিপশন সমর্থন করে।
SSL/TLS এনক্রিপশন সক্ষম করা: MongoDB সার্ভারে SSL এনক্রিপশন সক্ষম করতে,
mongodএবংmongosকমান্ডে--sslModeফ্ল্যাগ ব্যবহার করতে হবে:mongod --sslMode requireSSL --sslPEMKeyFile /path/to/server.pemএবং ক্লায়েন্টে SSL সংযোগ সক্রিয় করতে:
mongo --ssl --sslCAFile /path/to/ca.pem --sslPEMKeyFile /path/to/client.pem
4. MongoDB Firewall এবং Network Security
MongoDB সার্ভারটি বাইরের অ্যাক্সেস থেকে সুরক্ষিত রাখা অত্যন্ত গুরুত্বপূর্ণ। আপনার সার্ভারের সাথে সম্পর্কিত ফায়ারওয়াল কনফিগারেশন ঠিকভাবে সেট করা উচিত, যেন শুধুমাত্র অনুমোদিত IP অ্যাড্রেস থেকে MongoDB সার্ভারে অ্যাক্সেস পাওয়া যায়।
- ফায়ারওয়াল কনফিগারেশন:
MongoDB সার্ভারের জন্য একটি সুরক্ষিত ফায়ারওয়াল কনফিগার করুন, যা শুধুমাত্র নির্দিষ্ট IP রেঞ্জ বা নির্দিষ্ট অ্যাপ্লিকেশন থেকে MongoDB সার্ভারে অ্যাক্সেসে অনুমতি দেয়। - নেটওয়ার্ক নিরাপত্তা:
MongoDB সার্ভারকে public-facing করতে না দিয়ে, একে ভেতরের নেটওয়ার্কে রাখতে এবং একটি VPN (Virtual Private Network) এর মাধ্যমে অ্যাক্সেস করতে সুপারিশ করা হয়।
5. Encryption at Rest (ডেটার এনক্রিপশন)
MongoDB তে ডেটা স্টোর করার সময় যদি এনক্রিপশন প্রয়োজন হয়, তবে Encryption at Rest ব্যবহার করা উচিত। MongoDB Enterprise Edition এ Encrypted Storage Engine বৈশিষ্ট্য রয়েছে, যা ডেটার এনক্রিপশন নিশ্চিত করে।
Encrypted Storage Engine সক্রিয় করা:
MongoDB Enterprise Edition এ ইনস্টল করার সময় এনক্রিপশন সক্ষম করা যেতে পারে:mongod --enableEncryption --encryptionKeyFile /path/to/keyfile
6. লগ ফাইল এবং মনিটরিং কনফিগারেশন
MongoDB সার্ভারের নিরাপত্তা নিশ্চিত করতে লগ ফাইলগুলি মনিটর করা গুরুত্বপূর্ণ। লগ ফাইলগুলি ব্যবহারকারীর কার্যক্রম এবং ডেটাবেসে যেকোনো সন্দেহজনক কার্যক্রমের জন্য একটি কার্যকরী সরঞ্জাম হিসেবে কাজ করতে পারে।
MongoDB লগ ফাইল কনফিগার করা:
MongoDB এর লগ ফাইল কনফিগারেশন আপনিmongod.confফাইলেsystemLogসেটিংস এর মাধ্যমে করতে পারেন:systemLog: destination: file path: /var/log/mongodb/mongod.log logAppend: true- মনিটরিং:
MongoDB এর মেট্রিক্স এবং লগ মনিটর করার জন্যMongoDB Atlasবা তৃতীয় পক্ষের মনিটরিং টুল (যেমন: Prometheus, Grafana) ব্যবহার করা যেতে পারে।
7. নিরাপদ পাসওয়ার্ড ব্যবহারের প্রথা
MongoDB ডেটাবেসে নিরাপদ পাসওয়ার্ড ব্যবহার অত্যন্ত গুরুত্বপূর্ণ। পাসওয়ার্ড অবশ্যই শক্তিশালী এবং আনপ্রেডিক্টেবল হওয়া উচিত।
- পাসওয়ার্ড পলিসি:
MongoDB তে ব্যবহৃত পাসওয়ার্ডগুলি নিয়মিতভাবে পরিবর্তন করুন এবং অত্যন্ত শক্তিশালী পাসওয়ার্ড ব্যবহার করুন। - পাসওয়ার্ড ম্যানেজার ব্যবহার করা:
পাসওয়ার্ড ম্যানেজার ব্যবহার করার মাধ্যমে MongoDB এর সকল ব্যবহারকারীর পাসওয়ার্ড সুরক্ষিত রাখা যায়।
8. Audit Logging ব্যবহার করা
MongoDB Enterprise Edition এ Audit Logging সুবিধা উপলব্ধ, যা ডেটাবেসের সকল অ্যাক্সেস এবং কার্যক্রম ট্র্যাক করতে সহায়তা করে। এটি নিরাপত্তা ঝুঁকি এবং সন্দেহজনক কার্যক্রম সনাক্ত করতে সহায়ক।
Audit Log সক্রিয় করা: MongoDB তে Audit Logging সক্রিয় করার জন্য
mongod.confফাইলে এডিট করতে হবে:security: authorization: enabled auditLog: destination: file path: /var/log/mongodb/audit.log
সারাংশ
MongoDB এর নিরাপত্তা নিশ্চিত করার জন্য অনেক পদক্ষেপ রয়েছে, যেমন প্রমাণীকরণ এবং অনুমতির সঠিক কনফিগারেশন, এনক্রিপশন সক্ষম করা, নিরাপদ নেটওয়ার্ক কনফিগারেশন এবং মনিটরিং। MongoDB এর জন্য সেরা নিরাপত্তা অভ্যাস অনুসরণ করলে ডেটাবেসের সুরক্ষা, পারফরম্যান্স, এবং অ্যাভেইলেবিলিটি নিশ্চিত করা সম্ভব। MongoDB ডেটাবেসে শক্তিশালী নিরাপত্তা কৌশলগুলি বাস্তবায়ন করা অত্যন্ত গুরুত্বপূর্ণ, বিশেষত যখন আপনার ডেটাবেসে গুরুত্বপূর্ণ বা সংবেদনশীল তথ্য সংরক্ষিত থাকে।
Read more